/**  
* @description
* @author  wangshiwei  
* @date   2018年6月22日    
*/  
package com.oren.config;

import java.util.HashMap;
import java.util.Map;
import java.util.Set;

import com.oren.util.ReflectionUtil;

/**  
* @description bean的助手类
* @author  wangshiwei  
* @date   2018年6月22日 下午1:30:54
    
*/
public final class BeanHelper {
	/**
	 * 定义Bean 映射（用于存放Bean类与Bean实例的映射关系）
	 */
	private static final Map<Class<?>,Object> BEAN_MAP=
			new HashMap<Class<?>,Object>();
	
	static {
		//System.out.printf("进来哦了。。。。。。。。。。。。");
		Set<Class<?>> beanClassSet=ClassHelper.getBeanClassSet();
		for (Class<?> class1 : beanClassSet) {
			if(!class1.isInterface()){
				Object obj=ReflectionUtil.newInstance(class1);
				BEAN_MAP.put(class1, obj);
			}
		}
	}
	
	/**
	 * 获取bean的映射
	 * @return
	 */
	public static Map<Class<?>,Object> getBeanMap(){
		return BEAN_MAP;
	}
	
	/**
	 * 获取bean的实例
	 * @param cls
	 * @return
	 */
	@SuppressWarnings("unchecked")
	public static <T> T getBean(Class<T> cls) {
		if(!BEAN_MAP.containsKey(cls)) {
			throw new RuntimeException("can not get bean  by class "+cls);
		}
		return (T)BEAN_MAP.get(cls);
	}

	/**
	 * 设置bean实例
	 */
	public static void setBean(Class<?> cls,Object obj){
		BEAN_MAP.put(cls,obj);
	}
	
}
